Performance উন্নত করতে Buffered Stream ব্যবহার

Java Technologies - অ্যাপাচি কমন্স আইও (Apache Common IO) File Streams ব্যবস্থাপনা |
161
161

Apache Commons IO লাইব্রেরি Buffered Stream এর মাধ্যমে ফাইল রিড এবং রাইট করার কার্যকারিতা বৃদ্ধি করতে সাহায্য করে। যখন ফাইল সাইজ বড় হয়, তখন সিস্টেমে অনেক বেশি I/O অপারেশন এবং স্ট্রিম অপারেশন হতে থাকে, যা সিস্টেমের পারফরম্যান্স কমাতে পারে। Buffered Streams ফাইলের ছোট ছোট অংশের পরিবর্তে বড় ব্লক আকারে ডেটা প্রক্রিয়া করে, যার ফলে I/O অপারেশনগুলো অনেক দ্রুত হয়।

BufferedInputStream এবং BufferedOutputStream এই ধরনের স্ট্রিমের প্রধান উদাহরণ, যা Java I/O এর পারফরম্যান্স বৃদ্ধি করতে সহায়তা করে। Apache Commons IO লাইব্রেরি ব্যবহার করে আমরা সহজেই এসব স্ট্রিমের উপর কাজ করতে পারি।


1. BufferedInputStream ব্যবহার করে Performance উন্নত করা (Reading Files)


BufferedInputStream ফাইল রিড করার সময় বাফারিং ব্যবহার করে, যার ফলে ডেটার ছোট ছোট অংশের পরিবর্তে একসাথে বড় অংশ রিড করা হয়, যা I/O অপারেশনের পারফরম্যান্স বৃদ্ধি করে।

BufferedInputStream উদাহরণ:

import org.apache.commons.io.IOUtils;
import java.io.*;

public class BufferedInputStreamExample {
    public static void main(String[] args) {
        File inputFile = new File("example.txt");
        FileInputStream fis = null;
        BufferedInputStream bis = null;
        
        try {
            // Create FileInputStream and wrap it with BufferedInputStream
            fis = new FileInputStream(inputFile);
            bis = new BufferedInputStream(fis);

            // Read content from file using BufferedInputStream
            String content = IOUtils.toString(bis, "UTF-8");
            System.out.println("File content: " + content);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bis != null) bis.close();
                if (fis != null) fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

এখানে:

  • BufferedInputStream ব্যবহার করে FileInputStream কে বাফার করা হয়েছে।
  • IOUtils.toString() মেথডের মাধ্যমে ফাইলের কন্টেন্ট UTF-8 এনকোডিং এর মাধ্যমে পড়া হয়েছে।

BufferedInputStream স্ট্রিমে ডেটা রিড করার জন্য আরও দক্ষতার সাথে বড় ব্লক আকারে ডেটা নিয়ে আসবে, ফলে ফাইল রিডের সময় পারফরম্যান্স উন্নত হবে।


2. BufferedOutputStream ব্যবহার করে Performance উন্নত করা (Writing Files)


BufferedOutputStream ফাইল রাইট করার সময়, ডেটা ছোট ছোট অংশের পরিবর্তে বড় ব্লকে রাইট করে, যা write() মেথডের সংখ্যা কমিয়ে দেয় এবং I/O অপারেশন দ্রুত করে তোলে।

BufferedOutputStream উদাহরণ:

import org.apache.commons.io.IOUtils;
import java.io.*;

public class BufferedOutputStreamExample {
    public static void main(String[] args) {
        File outputFile = new File("output.txt");
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;

        try {
            // Create FileOutputStream and wrap it with BufferedOutputStream
            fos = new FileOutputStream(outputFile);
            bos = new BufferedOutputStream(fos);

            // Write content to the file using BufferedOutputStream
            String content = "This is a sample text written using BufferedOutputStream.";
            IOUtils.write(content, bos, "UTF-8");

            System.out.println("Content successfully written to the file.");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bos != null) bos.close();
                if (fos != null) fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

এখানে:

  • BufferedOutputStream ব্যবহার করে FileOutputStream কে বাফার করা হয়েছে।
  • IOUtils.write() মেথডের মাধ্যমে স্ট্রিং কন্টেন্ট ফাইলে UTF-8 এনকোডিং এর মাধ্যমে লেখা হয়েছে।

BufferedOutputStream স্ট্রিমে ডেটা লেখার জন্য আরও দক্ষভাবে বড় ব্লক আকারে ডেটা লেখবে, ফলে ফাইল লেখার সময় পারফরম্যান্স বৃদ্ধি পাবে।


3. Buffered Streams এর সাথে Performance Tuning


Buffered Streams যখন ফাইল রিড এবং রাইট করতে ব্যবহৃত হয়, তখন তার বাফার সাইজ (buffer size) পরামিতি গুরুত্বপূর্ণ ভূমিকা পালন করে। সাধারণত BufferedInputStream এবং BufferedOutputStream স্ট্রিমে বাফারের সাইজ ৮ কিলোবাইট থাকে, কিন্তু আপনি এটি Custom buffer size দিয়ে কনফিগার করতে পারেন, যা আরও ভালো পারফরম্যান্স প্রদান করতে পারে।

Custom Buffer Size দিয়ে Buffered Streams ব্যবহার:

import java.io.*;

public class CustomBufferSizeExample {
    public static void main(String[] args) {
        File inputFile = new File("example.txt");
        File outputFile = new File("output.txt");
        FileInputStream fis = null;
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        try {
            // Create FileInputStream and wrap it with BufferedInputStream with custom buffer size (16 KB)
            fis = new FileInputStream(inputFile);
            bis = new BufferedInputStream(fis, 16 * 1024); // 16 KB buffer size

            // Create FileOutputStream and wrap it with BufferedOutputStream with custom buffer size (16 KB)
            fos = new FileOutputStream(outputFile);
            bos = new BufferedOutputStream(fos, 16 * 1024); // 16 KB buffer size

            // Read from the input file and write to the output file
            byte[] buffer = new byte[16 * 1024]; // 16 KB buffer
            int bytesRead;
            while ((bytesRead = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, bytesRead);
            }

            System.out.println("File successfully copied with custom buffer size.");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bos != null) bos.close();
                if (bis != null) bis.close();
                if (fis != null) fis.close();
                if (fos != null) fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

এখানে:

  • BufferedInputStream এবং BufferedOutputStream এর জন্য 16 KB বাফার সাইজ কাস্টমাইজ করা হয়েছে।
  • বাফার সাইজ বড় করলে সাধারণত পারফরম্যান্স উন্নত হয়, কারণ কম I/O অপারেশন করা হয় এবং বড় ব্লক আকারে ডেটা প্রক্রিয়া করা যায়।

4. Buffered Streams এর সাথে File Copy করা


ফাইল কপি করার ক্ষেত্রে Buffered Streams সবচেয়ে কার্যকরী। এটি ডেটা বড় ব্লক আকারে কপি করে, ফলে কপি অপারেশন দ্রুত হয়।

Buffered Streams ব্যবহার করে ফাইল কপি করা:

import java.io.*;

public class BufferedFileCopyExample {
    public static void main(String[] args) {
        File sourceFile = new File("source.txt");
        File destFile = new File("destination.txt");

        try (
            FileInputStream fis = new FileInputStream(sourceFile);
            BufferedInputStream bis = new BufferedInputStream(fis);
            FileOutputStream fos = new FileOutputStream(destFile);
            BufferedOutputStream bos = new BufferedOutputStream(fos)
        ) {
            // Copy data from source file to destination file using buffered streams
            byte[] buffer = new byte[8192]; // 8 KB buffer
            int bytesRead;
            while ((bytesRead = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, bytesRead);
            }

            System.out.println("File copied successfully using Buffered Streams.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে:

  • BufferedInputStream এবং BufferedOutputStream ব্যবহার করে source.txt ফাইলকে destination.txt ফাইলে কপি করা হয়েছে।
  • বাফার সাইজ ৮ কিলোবাইট রাখা হয়েছে।

সারাংশ


Buffered Streams (যেমন BufferedInputStream এবং BufferedOutputStream) ফাইল রিড এবং রাইট করার কার্যকারিতা দ্রুততর করতে সাহায্য করে। Apache Commons IO লাইব্রেরি ব্যবহার করে, আপনি Buffered Streams ব্যবহার করে ফাইল কপি, রিড, এবং রাইট অপারেশনগুলো আরও কার্যকরী এবং দ্রুত করতে পারবেন। কাস্টম বাফার সাইজ ব্যবহার করলে পারফরম্যান্স আরও উন্নত হতে পারে। এই স্ট্রিমগুলির মাধ্যমে আপনি ছোট ছোট I/O অপারেশনকে বড় ব্লক আকারে রিড এবং রাইট করতে পারেন, যা সিস্টেমের I/O কাজকে আরও দ্রুত এবং কার্যকরী করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion